package com.yc.cloud.openai.response;

import java.util.List;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

@Data
@Schema(description = "Coze机器人信息响应")
public class CozeRobotInfoResp {

    @Schema(description = "状态码")
    private Integer code;

    @Schema(description = "消息")
    private String msg;

    @Schema(description = "数据")
    private RobotData data;

    @Data
    public static class RobotData {
        @Schema(description = "机器人ID")
        private String botId;

        @Schema(description = "机器人名称")
        private String name;

        @Schema(description = "机器人描述")
        private String description;

        @Schema(description = "图标URL")
        private String iconUrl;

        @Schema(description = "创建时间")
        private Long createTime;

        @Schema(description = "更新时间")
        private Long updateTime;

        @Schema(description = "版本")
        private String version;

        @Schema(description = "提示词信息")
        private PromptInfo promptInfo;

        @Schema(description = "引导信息")
        private OnboardingInfo onboardingInfo;

        @Schema(description = "机器人模式")
        private Integer botMode;

        @Schema(description = "模型信息")
        private ModelInfo modelInfo;

        @Schema(description = "插件信息列表")
        private List<PluginInfo> pluginInfoList;
    }

    @Data
    public static class PromptInfo {
        @Schema(description = "提示词")
        private String prompt;
    }

    @Data
    public static class OnboardingInfo {
        @Schema(description = "开场白")
        private String prologue;

        @Schema(description = "建议问题")
        private List<String> suggestedQuestions;
    }

    @Data
    public static class ModelInfo {
        @Schema(description = "模型ID")
        private String modelId;

        @Schema(description = "模型名称")
        private String modelName;

        @Schema(description = "温度")
        private Double temperature;

        @Schema(description = "Top P")
        private Double topP;

        @Schema(description = "频率惩罚")
        private Double frequencyPenalty;

        @Schema(description = "上下文轮数")
        private Integer contextRound;

        @Schema(description = "最大token数")
        private Integer maxTokens;

        @Schema(description = "响应格式")
        private String responseFormat;
    }

    @Data
    public static class PluginInfo {
        @Schema(description = "插件ID")
        private String pluginId;

        @Schema(description = "插件名称")
        private String name;

        @Schema(description = "插件描述")
        private String description;

        @Schema(description = "插件图标URL")
        private String iconUrl;

        @Schema(description = "API信息列表")
        private List<ApiInfo> apiInfoList;
    }

    @Data
    public static class ApiInfo {
        @Schema(description = "API ID")
        private String apiId;

        @Schema(description = "API名称")
        private String name;

        @Schema(description = "API描述")
        private String description;
    }
}
